『隨著全球高速網路的發展及普及化,頻寬傳輸成本的降低,相對應的許多需要高頻寬傳輸的應用服務相繼的也成為目前很夯的主流應用,如智慧自動駕駛、遠距離醫療結合達文西手臂進行手術與今天要探討的直播應用景場等,而筆者在去年的時候進行了一輪的雲端 Wordpress 架站探討,其中也包含了直播相關議題的小應用,基於上一次並沒有深入太多在這部分的琢磨與深耕,這次希望能更進一步的探索阿里雲 Apsara Media Live。 』
什麼是視頻直播 Stream Live
在介紹雲視頻直播服務前,我們先簡單分三個階段透過圖來理解直播是怎麼的一個運作原理:
第一階段(影音採集、影像處理、編碼封裝)
這一階段會將設備的影音進行編碼處理,並將音頻、視頻合併封裝成媒體容器(Container Fomat)
第二階段(影音串流、轉碼、錄製)
影音內容封裝完成後,我們需要傳遞給觀看端讀取內容,因此我們需要透過流媒體傳輸協議將媒體傳輸出去,而串流伺服器會產生出推流位址及拉流地址並透過傳輸協議將內容提供到影音上傳端及下載端。
串流伺服器同時還要負責重要任務,需要能同時負載多個推流及拉流需求,以及將推流傳輸協議轉碼成其他播放類型協議與錄製等功能。
第三階段(影音解碼、播放)
在整個傳輸過程最後到收看端的設備上,會透過播放器進行解碼將視頻解碼回原始的 RGB、YUV 及音頻的 PCM。
會發現到其實整個 Live 串流是一個將內容編碼在解碼的過程。
阿里雲視頻直播(Apsara Media Live)
前面有提到整個串流核心其實在於串流伺服器,對於整個直播的流暢度及工作負載是至關重要的角色,而 Apsara Media Live 是阿里雲上提供的直播解決方案的 PaaS 層級服務,以基礎環境來說,不需要操心如何搭建串流服務、串流負載因阿里雲底層透過全託管式的集群調度提供服務,而更為便利的是其結合 CDN 及多樣的 SDK 讓不同地區不同裝置平台皆可以享用高品質快速的直播串流體驗。
Apsara Live 在開發上也提供了特效 SDK 讓開發者不需要為直播功能進行重新開發,功能參考:
接著讓我們來實際動手快速建立直播應用應用吧!
**實務操作 **
在操作前我們可以參考阿里雲提供的各協議產生的直播延遲評估,在選擇時除了延遲時間外還需要考量支援廣泛性。
而本次實務希望透過阿里雲視頻直播 RTS 低延遲直播協議從台灣發出推流並在新加坡觀看,體驗低延遲帶來的效果,因此導出以下架構圖並著手建立服務。
登入 Alibaba Cloud 帳戶,進入視頻直播控制台,這裡可以透過概覽 Dashbord 檢視目前視頻直播的資源的使用率。
選擇網域名稱管理,先添加推流域名讓直播流能透過 CDN 從最近節點推上阿里雲,添加完成後需要 Cname 紀錄進行網域驗證 。
接著一樣的步驟添加播放域名讓接收端可以透過阿里雲 CDN 從最近節點觀看內容,完成後一樣需要 Cname 紀錄網域驗證,可以看到域名名稱管理有一組推流及播放域名 。
接著要將推流及播放域名關聯起來,點選播放域名 ,在推流信息選擇添加推流信息,完成後可以在推流信息下看到已關聯的域名。
接著將推流、拉流域名安裝上 HTTPS 憑證,如沒有憑證筆者推薦之前有使用過的 ZeroSSL 提供的免費證書。
因為這裡我們需要提供播放端使用 RTS 低延遲協議播放,在播流域名點選超低延遲直播並將工能打開。
配置完成後,就可以嘗試將進行直播推拉流驗證囉!在工具箱點選地址產生器,選擇播流域名會自動帶入以關聯的推流域名,這裡需要注意建立 AppName、StreamName,如有多推流可以透過AppName來分類,但注意不同推流源不能有一樣的 StreamName。
生成後可以看到推流位址及拉流位址,我們需要先複製推流地址,本次使用 RTMP 透過 OBS 直播軟體進行推流,這裡可以注意到有一串 auth_key 這個是 URL token 預設會自動產生一組 30 分鐘效期,如不想使用也可以域名管理關閉。
OBS 開始串流後,可以在直播管理的流管理看到目前已推上直播中心的流,點選直播地址可以看到有多種格式的播放流可以拉取,這裡我們選擇複製 RTS。
接著我們要播放直播流驗證延遲時間,這裡要注意因為要能支援 RTS 的傳輸協議,這裡筆者簡單的使用了阿里雲提供的 web SDK 播放器,程式碼可在筆者的 Github 下載,播放後可以發現 OBS 推流端和播放端 web 延遲在約在 1 秒內的時間,這樣就完成簡單快速的驗證囉。
阿里雲視頻直播提供同時多地區的一對多、多對多等靈活的直播場景讓使用者可以依據情境建立自己的直播應用,在現在講求敏捷的開發,會提供很大的助力哦!